interface Padder {
  getPaddingString(): string;
};

// 获得 numSpaces 个空格的字符串
class SpaceRepeatingPadder implements Padder {
  constructor(private numSpaces: number) {
  }
  getPaddingString() {
    return Array(this.numSpaces + 1).join(" ");
  }
}

// 获得数据本身，不做额外的处理
class StringPadder implements Padder {
  constructor(private value: string) {}
  getPaddingString() {
    return this.value;
  }
}

let padder: Padder = new SpaceRepeatingPadder(6);
let padder1: Padder = new StringPadder("china");

function printPadder(padder: Padder) {
  if (padder instanceof SpaceRepeatingPadder) {
    console.log("SpaceRepeatingPadder:", padder);
  }
  else if (padder instanceof StringPadder) {
    console.log("StringPadder:", padder);
  }
}

printPadder(padder);
printPadder(padder1);
